/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-06-08
 * Time: 0:07
 */

/**
 * 泛型边界
 * @param <E>
 */
class Alg<E extends Comparable<E>> {

   public E Find_Max(E[] array) {
       E max = array[0];
       for (int i = 0; i < array.length; i++) {
           if (max.compareTo(array[i]) < 0) {
               max = array[i];
           }
       }
       return max;
   }
}

public class Test {

    public static void main1(String[] args) {

        Integer[] array = new Integer[]{1,2,3,4,5,6};
        Alg<Integer> alg = new Alg<>();
        int ret = alg.Find_Max(array);//自动类型转换
        System.out.println(ret);

    }









    /**
     * 泛型方法
     */
    public static void main2(String[] args) {
        Alg2 alg2 = new Alg2();
        Integer[] array = new Integer[]{1,2,3,4,5,6};
        int ret = alg2./*<Integer>*/Find_Max(array);
        System.out.println(ret);
    }











    /**
     * 泛型静态方法2:加static
     * 静态行为，不依赖对象，可以直接用类名调用（不用每次,new对象）
     */
    public static void main(String[] args) {

        Integer[] array = new Integer[]{1,2,3,4,5,6};
        int ret = Alg3./*<Integer>*/Find_Max(array);
        System.out.println(ret);
    }
}



/**
 * 泛型方法
 */

class Alg2 {
    public<E extends Comparable<E>>  E Find_Max(E[] array) {
        E max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}




/**
 * 泛型方法2:静态方法
 * 静态行为，不依赖对象，可以直接用类名调用
 */
class Alg3 {
    public static  <E extends Comparable<E>>  E Find_Max(E[] array) {
        E max = array[0];
        for (int i = 0; i < array.length; i++) {
            if (max.compareTo(array[i]) < 0) {
                max = array[i];
            }
        }
        return max;
    }
}
